home *** CD-ROM | disk | FTP | other *** search
- Dies und das zu den Dateisystemen ISO 9293, GEMDOS und MS-DOS
-
-
- Copyright ╜ 1995-07-02/12-10 by Rainer Seitel
-
- Diese Datei darf mit Quellenangabe ganz oder teilweise zitiert werden.
-
-
- Bootsektor
- ----------
-
- Aufbau eines Bootsektors nach Atari, MS-DOS und ISO 9293:
- $00-$02 00-02 M68000- oder I8086-Sprungbefehl
- MS-DOS will ab Laufwerk C: hier $EB $3C $90!
- $03-$0A 03-10 Name des Initialisierungsprogrammes
- Erlaubte Zeichen: » !"%&'()*+,-./0..9:;<=>?A..Z_«
- $08-$0A 08-10 TOS erwartet hier eine Seriennummer zur
- Diskwechselerkennung! Ab TOS 2 wird auch die
- von MS-DOS geschriebene Seriennummer beachtet.
- $0B-$0C 11-12 Sektorlänge
- $0D 13 Sektoren je Cluster
- $0E-$0F 14-15 Anzahl reservierter Sektoren einschlie₧lich Bootsektor
- $10 16 Anzahl der FATs (nach ISO immer 2)
- $11-$12 17-18 Einträge im Wurzelverzeichnis
- $13-$14 19-20 Gesamtzahl der Sektoren oder 0 bei mehr als 65535
- $15 21 Datenträger-Kennzeichen, Media-Byte
- $16-$17 22-23 Sektoren je FAT
- $18-$19 24-25 Sektoren je Spur
- $1A-$1B 26-27 Anzahl der Seiten
- $1C-$1D 28-29 Anzahl versteckter Sektoren vor dem Bootsektor
- Ab MS-DOS 4.0 gibt es den erweiterten BPB:
- $1C-$1F 28-31 Anzahl versteckter Sektoren vor dem Bootsektor
- $20-$23 32-35 Gesamtzahl der Sektoren wenn mehr als 65535
- $24 36 physikalische Laufwerksnummer für MS-DOS
- $25 37 für MS-DOS reserviert
- $26 38 $29 kennzeichnet den erweiterten BPB
- $27-$2A 39-42 Seriennummer, Zeitpunkt der Initialisierung
- $2B-$35 43-53 Diskname wie im Wurzelverzeichnis
- $36-$3D 54-61 Dateisystem: »FAT12 «, »FAT16 «
- $3E-$FD 62-253 Boot-Programm
- $FE-$FF 254-255 Atari: Ausgleich für Prüfsumme $1234 wenn bootfähig
- MS-DOS: $55 $AA wenn bootfähig
- Mac: mu₧ $55 $AA sein, das ist ein Fehler!
-
-
- /* Media-Byte und Format-Parameter für MS-DOS, Atari und DIN EN 29293 =
- ISO 9293:1987. Nach ISO bedeutet das Media-Byte $FD Werte aus der Tabelle
- benutzen und $F9 Werte aus dem Bootsektor lesen. Wenn 40-Spur-Disketten von
- der Tabelle abweichen, dann ist das Media-Byte also $F9.
- "ISO Typ ..." nach DIN EN 29983 = ISO/IEC 9983:1989.
-
- Media-Byte Diskette Grö₧e Formatierung Initialisierung
- MS Atar ISO ISO Typ in mm (in) CYL NSIDES SPT BPS RES SPF SPR SPC Clust
- $F0 $F0 $F9 303 90 (3,5 ) 80 2 36 512 1 9 15 2 2863
- $F0 $F9 302 90 (3,5 ) 80 2 18 512 1 9 14 1 2847
- $F0 302 90 (3,5 ) 80 2 18 512 1 6 14 2 1426
- $F8 $F8 Festplatte
- $F9 $F9 301 90 (3,5 ) 80 2 9 512 1 3 7 2 713
- $F9 301 90 (3,5 ) 80 2 9 512 1 5 7 2 711
- $F9 (301) 90 (3,5 ) 80 1 9 512 1 5 7 2 351
- $F9 203 130 (5,25) 80 2 9 512 1 3 11 2 711
- $F9 $F9 204 130 (5,25) 80 2 15 512 1 7 14 1 2371
- $FC $FC (202) 130 (5,25) 40 1 9 512 1 2 4 1 351
- $FD $FD $FD 202 130 (5,25) 40 2 9 512 1 2 7 2 354
- $FE (202) 130 (5,25) 40 1 8 512 1 1 4 1 313
- $FF (202) 130 (5,25) 40 2 8 512 1 1 7 2 315
- */
-
-
- FATs
- ----
-
- Die Einträge 0 und 1 enhalten das Media-Byte und $FF.
- Die Werte in den Einträgen 2 bis Clusterzahl + 1 bedeuten:
- $0000 freier Cluster
- $0001 nicht möglich
- $0002 bis (Clusterzahl + 1) nächster Cluster
- (Clusterzahl + 2) bis $FFEF reserviert
- $FFF0 bis $FFF6 verboten!
- $FFF7 defekter Cluster
- $FFF8 bis $FFFF Dateiende
-
-
- Beschränkungen auf TOS-kompatiblen Rechnern
- -------------------------------------------
-
- DL_SECSIZ $4000 $4000 $4000 $8000 $8000 $8000 $8000
- DL_MINFAT 2 2 1 1 1 ?
- DL_MAXFAT 2 2 2 2 2 2 2
- DL_MINSPC 1 1 1 1 1 1 1
- DL_MAXSPC 2 32 32 64 64 64
- DL_CLUSTS $7FFE $FFEE $FFEE $FFEE $FFEE $7FFD
- DL_MAXSEC $7FFF $FFFF $FFFF $FFFF $FFFFFF $FFFF $FFFF
- DL_DRIVES 16 16 16 16 32 16 26
- DL_CLSIZB $4000 $4000 $4000 $10000 $8000 $8000?
- DL_RDLEN 1008 1008 1008 1008? 2032 ?
- DL_FSIZ 128 256 256 256 256 128 256
- DL_FATREC ? ? ? ? 512 ?
- DL_CLUSTS12 $7FE $FEE $FEE $FEE $FEE $FEE $FEE
- DL_CLUSTS32 0 0 0 0 0 0 0
- DL_BFLAGS 1 1 3 3 3 ?
- DL_FILESYS '_DOS' '_DOS' '_DOS' '_DOS' 'BDOS' 'MAGX' 'MAGX'
- DL_VERSION 19950401 2 3
- Version 0.13 0.15 0.20 0.30
- Ab TOS 1.00 1.04 2.06 4.04
-
- Die Tabelle ist noch nicht vollständig. Über Ergänzungen freue ich mich.
-
- Ab GEMDOS 0.15 (TOS 1.04) sind Partitionen mit mehr als 32767 Sektoren bzw.
- 32766 Cluster möglich. Wegen eines vorzeichenbehafteten Vergleichs in Ataris
- GEMDOS < 0.30 ist es ratsam, einen bestimmten Cluster als defekt zu markieren:
- Bei 1 Sektor pro Cluster den Cluster $7FFF = 32767.
- Bei 2 Sektoren pro Cluster den Cluster $3FFF = 16383.
- Bei 4 Sektoren pro Cluster den Cluster $1FFF = 8191.
- Bei 8 Sektoren pro Cluster den Cluster $7FF = 4095.
- Bei 16 Sektoren pro Cluster den Cluster $3FF = 2047.
- Bei 32 Sektoren pro Cluster den Cluster $1FF = 1023.
- Bei 64 Sektoren pro Cluster den Cluster $7F = 511.
-
-
- Dcntl() bei Big-DOS
- -------------------
-
- #define FUTIME (('F' << 8) | 3) /* Zeit des Verzeichnisses setzen */
- /* Die Bezeichnungen XH_DL_... sind die der DOS-Limits aus xhdi.h. */
- #define DL_SECSIZ ('D' << 8 | XH_DL_SECSIZ) /* max. bpb->recsiz */
- return 0x8000;
- #define DL_MINFAT ('D' << 8 | XH_DL_MINFAT)
- return 1;
- #define DL_MAXFAT ('D' << 8 | XH_DL_MAXFAT)
- return 2;
- #define DL_MINSPC ('D' << 8 | XH_DL_MINSPC) /* min. bpb->clsiz */
- return 1;
- #define DL_MAXSPC ('D' << 8 | XH_DL_MAXSPC) /* max. bpb->clsiz */
- return 64;
- #define DL_CLUSTS ('D' << 8 | XH_DL_CLUSTS) /* max. bpb->numcl 16-Bit-FAT */
- return 0xFFF0L-FIRST_CLUSTER;
- #define DL_MAXSEC ('D' << 8 | XH_DL_MAXSEC) /* max. Anzahl Sektoren */
- return 0xFFFFFFL;
- #define DL_DRIVES ('D' << 8 | XH_DL_DRIVES) /* max. Anzahl Laufwerke */
- return NUM_DRIVES;
- #define DL_CLSIZB ('D' << 8 | 8) /* max. bpb->clsizb */
- return 0x8000;
- #define DL_RDLEN ('D' << 8 | 9) /* max. (bpb->rdlen * bpb->recsiz / 32) */
- return 2032;
- #define DL_FSIZ ('D' << 8 | 10) /* max. bpb->fsiz */
- return 256;
- #define DL_FATREC ('D' << 8 | 11) /* max. bpb->fatrec */
- return 512;
- #define DL_CLUSTS12 ('D' << 8 | 12) /* max. bpb->numcl 12-Bit-FAT */
- return 0xFF0-FIRST_CLUSTER;
- #define DL_CLUSTS32 ('D' << 8 | 13) /* max. bpb->numcl 32-Bit-FAT */
- return 0;
- #define DL_BFLAGS ('D' << 8 | 14) /* unterstützte Bits in bpb->bflags */
- return 3;
- #define DL_FILESYS ('D' << 8 | 15) /* (XBRA-)Kennung des Dateisystems */
- return 'BDOS';
- #define DL_VERSION ('D' << 8 | 16) /* Version des Dateisystems */
- return 19950401L;
- #define DL_CHAR ('D' << 8 | 17) /* erlaubte Zeichen */
- /* Erlaubte Zeichen auf GEMDOS: */
- return "!\"#$%&'()+,-0..9;<=>@A..Z[]^_`{|}~ÇÄÅÉÆÖÜ¢£¥Ñªº¿¬½¼¡«»ßµ±÷°·²";
- /* Erlaubte Zeichen auf ISO 9293: */
- return "0..9A..Z_";
- /* Erlaubte Zeichen auf MS-DOS: */
- return "!#$%&'()-0..9@A..Z^_`{}~ÇÄÅÉÆÖÜ¢£¥Ñªº¿¬½¼¡«»ßµ±÷°·²";
- #define DL_SETCHAR ('D' << 8 | 18) /* Erlaubte Zeichen setzen oder abfragen */
- /* arg = -1: Erlaubte Zeichen abfragen */
- /* arg = 0: Erlaubte Zeichen auf GEMDOS setzen */
- /* arg = 1: Erlaubte Zeichen auf ISO 9293 (oder 9660) d-Zeichen setzen */
- /* arg = 2: Erlaubte Zeichen auf MS-DOS setzen */
- /* arg = 4: Erlaubte Zeichen auf Windows '95 setzen, reserviert! */
-
-
- MausNet: Rainer Seitel @ KA
- Internet: Rainer_Seitel@ka.maus.de (bevorzugt, keine Mail > 16 KByte pro Tag!)
- Rainer.Seitel@stud.uni-karlsruhe.de
- http://www.uni-karlsruhe.de/~Rainer.Seitel/bigdos.html
- http://wwwrzstud.rz.uni-karlsruhe.de/~ujo7/bigdos.html
- (http://129.13.95.1/~ujo7/bigdos.html)
-